﻿Imports iTextSharp.text

Module GenPDF

    Public Sub genererpdfpuisdatatable(ByVal titre As String, ByVal lesdonnees As DataTable, ByVal nomfichier As String)

        Dim doc As Document = New Document
        Dim tableau_entete As pdf.PdfPTable
        Dim tableau_ligne As pdf.PdfPTable
        Dim tableau_image As pdf.PdfPTable
        Dim cellule As pdf.PdfPCell = New pdf.PdfPCell

        Try
            pdf.PdfWriter.GetInstance(doc, New IO.FileStream("C:\Users\Clement\Documents\" & nomfichier & ".pdf", IO.FileMode.Create))

            doc.Open()
            'entête de la page
            tableau_entete = New pdf.PdfPTable(3)
            'création d'un tableau de 2 colonnes
            cellule.Colspan = 0

            'création d'un tableau a 2 colonnes
            tableau_entete.AddCell("Récapitulatif " & nomfichier & "")
            'ecriture dans les case du tableau
            tableau_entete.AddCell(titre)
            'ajout de la date et heure de génération
            tableau_entete.AddCell(Date.Today & " " & TimeOfDay.Hour & " : " & TimeOfDay.Minute)

            doc.Add(tableau_entete)
            'Ajoute le tableau au document. Vous pouvez ajouter un texte ou une variable qui
            'contient tout le texte que vous voulez inserer

            tableau_image = New pdf.PdfPTable(1)

            cellule.Colspan = 0

            Dim ChemainImage As String = "C:\Users\Clement\Pictures\COOL-STORY-BRO.jpg"
            Dim jpg As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(ChemainImage)

            jpg.ScaleToFit(180.0F, 160.0F)
            jpg.SpacingBefore = 20.0F
            jpg.SpacingAfter = 10.0F
            jpg.Alignment = Element.ALIGN_CENTER

            tableau_image.AddCell(jpg)

            doc.Add(tableau_image)



            tableau_ligne = New pdf.PdfPTable(lesdonnees.Columns.Count)

            cellule.Colspan = 0

            Select Case nomfichier

                Case "Clients"

                    tableau_ligne.AddCell("Code Client")
                    tableau_ligne.AddCell("Nom")
                    tableau_ligne.AddCell("Prénom")
                    tableau_ligne.AddCell("Rue")
                    tableau_ligne.AddCell("Code Postal")
                    tableau_ligne.AddCell("Ville")

                Case "Commandes"

                    tableau_ligne.AddCell("ID")
                    tableau_ligne.AddCell("Date")
                    tableau_ligne.AddCell("Client n°")

                Case "Fournisseurs"

                    tableau_ligne.AddCell("ID")
                    tableau_ligne.AddCell("Nom")
                    tableau_ligne.AddCell("Ville")
                    tableau_ligne.AddCell("Code Postal")

                Case "Produits"

                    tableau_ligne.AddCell("ID")
                    tableau_ligne.AddCell("Libelle")
                    tableau_ligne.AddCell("Prix HT")
                    tableau_ligne.AddCell("Quantités en Stock")
                    tableau_ligne.AddCell("Fournisseur n°")
                    tableau_ligne.AddCell("Catégorie n°")

                Case "Categories"

                    tableau_ligne.AddCell("ID")
                    tableau_ligne.AddCell("Libelle")

                Case "listeproduits"

                    tableau_ligne.AddCell("ID Commande")
                    tableau_ligne.AddCell("Produit")
                    tableau_ligne.AddCell("Quantités")
                    tableau_ligne.AddCell("Prix unité")
                    tableau_ligne.AddCell("Prix total")

            End Select

            tableau_ligne.SpacingBefore = 10.0F
            tableau_ligne.SpacingAfter = 10.0F

            Dim nblignes As Integer
            Dim nbcolonnes As Integer
            Dim uneligne As String = ""

            nblignes = lesdonnees.Rows.Count
            nbcolonnes = lesdonnees.Columns.Count
            Dim i, j As Integer
            For i = 0 To nblignes - 1
                For j = 0 To nbcolonnes - 1
                    uneligne = lesdonnees.Rows(i).Item(j)
                    tableau_ligne.AddCell(uneligne)
                Next
                uneligne = ""
            Next
            doc.Add(tableau_ligne)
        Catch e As Exception
            MsgBox("Erreur sur le fichier Pdf: " & e.Message)
        End Try
        doc.Close()
        Process.Start("C:\Users\Clement\Documents\" & nomfichier & ".pdf")


    End Sub

End Module
